/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    InputLine, Input, TextArea, InputDatalist, Text, CheckSwitch, SuffixInput, useTheme, LineColumn, BlobInputList,}
    from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps, useItemInputControl
} from "../../common/base";
import {useMeasureInpFilter} from "../../common/hooks";

const 检修情况选=[
    "1.安全阀外观检查合格；校验过程中泄漏不合格。\n2.拆卸检查主、导阀各密封部件。主阀阀座阀瓣密封面有凹坑；研磨修复组装调校合格。",
    "已校验的安全阀注意事项重点提示：已校验的安全阀投用后，使用单位应定期对安全阀进行手动排汽（气）试验，并做好手动排放试验记 录。若无法进行手动排汽（气）或生产工艺、工作场所、易燃易爆场所、有毒有害的影响环境安全等条 件不允许手动排汽（气）试验时，使用单位应采取其它相应措施，保证安全阀处于灵敏可靠状态。"
];
export const itemA结论=['检验日期','新下检日','建议','校验结论','大备注'];
//评估 下结论页面：
export const ItemConclusion=
    React.forwardRef((
        { children, show ,alone=true,refWidth}:InternalItemProps,  ref
    ) => {
        const theme = useTheme();
        const getInpFilter = React.useCallback((par: any) => {
            const {检验日期,新下检日,建议,校验结论,大备注} =par||{};
            return {检验日期,新下检日,建议,校验结论,大备注};
        }, []);
        const {inp, setInp} = useItemInputControl({ ref });
        return (
            <InspectRecordLayout inp={inp} setInp={setInp}  getInpFilter={getInpFilter} show={show}
                                 alone={alone}  label={'维护检修情况，校验结论'}>
                <Text  variant="h5">
                    维护检修情况说明
                </Text>
                <BlobInputList  value={inp?.建议 ||''} rows={8} onListChange={v => setInp({...inp,建议:v || undefined}) }
                                datalist={检修情况选}
                />
                <Text  variant="h5">
                  下结论：
                </Text>
                <LineColumn column={4} >
                    <InputLine  label='校验结果' >
                        <BlobInputList  value={inp?.校验结论 ||''} rows={8} onListChange={v => setInp({...inp,校验结论:v || undefined}) }
                                        datalist={["该安全阀经校验合格","该安全阀经校验不合格，不得投入使用"]}
                        />
                    </InputLine>
                    <InputLine  label='校验日期' >
                        <Input  value={inp?.检验日期 ||''}  type='date'
                                onChange={e => setInp({ ...inp, 检验日期: e.currentTarget.value}) } />
                    </InputLine>
                    <InputLine  label='下次检验日期' >
                        <Input  value={inp?.新下检日 ||''}  type='date'
                                onChange={e => setInp({ ...inp, 新下检日: e.currentTarget.value}) } />
                    </InputLine>
                </LineColumn>
                <Text  variant="h5">
                  备注：
                </Text>
                <BlobInputList  value={inp?.大备注 ||''} rows={4} onListChange={v => setInp({...inp,大备注:v || undefined}) }
                                datalist={["为保证安全阀灵敏、可靠，请在使用中按要求做好维护和检查工作。"]}
                />
            </InspectRecordLayout>
        );
    } );

/**不要重名了 ['附设装置名称','附设装置'] 可能莫名其妙报错的。台账snapshot.‘安装单位’等不能直接使用的，要本次最新:易变动。
 * 设备概况有些字段不在台账存在的，还有些不想采用台账+计费所需的业务配置页面录入的数据，还有些事后才能够同步给台账的；
 * 业务配置页面录入的： 公称通径 公称压力 ；
 * */
const PA8介质=['空气','氮气','蒸汽','水','其他'];
const PA2阀类型=['弹簧式','先导式','重锤式','静重式','杠杆式','脉冲式'];
const PA17校验方式=['离线校验','在线实跳','在线助跳',];
const 校验装置名称=['离线校验台',];
const dbName设备概况 =[
    {desc:'使用单位',name:'使用单位'},{desc:'单位地址',name:'使用单位地址',type:'B'}, {desc:'联系人',name:'安管人员'},{desc:'联系电话',name:'安管电话'},
    {desc:'设备代码',name:'设备代码'},{desc:'设备安装位置',name:'设备位置'},{desc:'所在设备名称',name:'所在设备'},{desc:'所在设备编号',name:'所在设备号'},
    {desc:'设备工作压力',name:'设备压力',unit:'MPa'}, {desc:'设备工作介质',name:'设备介质',type:'l',list:PA8介质},
    {desc:'安全阀类型',name:'阀类型',type:'l',list:PA2阀类型},{desc:'安全阀安装位置',name:'阀安装位'},{desc:'制造单位名称',name:'制造单位'},
    {desc:'安全阀型号',name:'阀型号'},{desc:'校验介质',name:'验介质',type:'l',list:PA8介质},{desc:'校验方式',name:'验方式',type:'l',list:PA17校验方式},
    {desc:'委托整定压力',name:'委整定压',unit:'MPa'}, {desc:'校验装置编号',name:'校验装号'}, {desc:'实际整定压力',name:'实整定压',unit:'MPa'},
    {desc:'校验装置名称',name:'校验装',type:'l',list:校验装置名称}, {desc:'密封试验压力',name:'密试验压',unit:'MPa'}, {desc:'铅封标记',name:'铅封'},
    {desc:'标牌号',name:'标牌号'},{desc:'一品一码',name:'一品码'},
];
const itemA设备概=['限超过','发生过','被重大','行环境','行状况'];
dbName设备概况.forEach(({name} : any, i:number)=> {
    itemA设备概.push( name );
});
/**注意这里的ref不是窗口<DIV ref={ref}>的哪一个;而是 React.useRef<InternalItemHandResult>(null)类似的传递数据和接口函数的,不是一个东西;
 * */
export const DeviceSurvey=
    React.forwardRef((
        { children, show ,alone=true,refWidth}:InternalItemProps,  ref
    ) => {
        const theme = useTheme();
        const [getInpFilter]=useMeasureInpFilter(null,itemA设备概,);
        const {inp, setInp} = useItemInputControl({ ref });
        return (
            <InspectRecordLayout inp={inp} setInp={setInp}  getInpFilter={getInpFilter} show={show}
                                 alone={alone}  label={'安全阀设备概况'}>
                没能在计费相关的业务配置页面录入的设备相关的概况部分:
                <LineColumn  column={4} >
                    {
                        dbName设备概况.map(({name,desc,cb,type,unit,list} : any, i:number)=> {
                            if(cb?.edit){
                                return  cb.edit(inp,setInp);
                            }
                            else if(type==='l') return <InputLine key={i} label={desc}>
                                    <InputDatalist value={(inp?.[name]) || ''} datalist={list}
                                               onListChange={v => {
                                                   setInp({ ...inp, [name]:v || undefined});
                                               } } />
                                </InputLine>;
                            else if(type==='d') return  <InputLine key={i} label={desc}>
                                    <Input  value={inp?.[name] ||''}  type='date'
                                            onChange={e => setInp({ ...inp, [name]: e.currentTarget.value}) } />
                                </InputLine>;
                            else if(type==='b') return  <InputLine key={i} label={desc}>
                                <CheckSwitch  checked={inp?.[name] || false} onChange={e => setInp({...inp, [name]: inp?.[name]? undefined:true}) } />
                                </InputLine>;
                            else if(type==='B')  return  <InputLine key={i} label={desc}>
                                        <BlobInputList  value={inp?.[name] ||''} datalist={list}
                                                        onListChange={v => setInp({ ...inp, [name]: v || undefined}) } />
                                    </InputLine>;
                            else if(type==='m')  return <div key={i}>{desc}:
                                         <TextArea  value={inp?.[name] ||''} rows={4}
                                            onChange={e => setInp({ ...inp, [name]: e.currentTarget.value||undefined}) } />
                                    </div>;
                            else if(unit) return  <InputLine key={i} label={desc}>
                                    <SuffixInput  value={inp?.[name] ||''} onSave={txt=> setInp({...inp,[name]: txt || undefined })}
                                              type={type==='n'? "number": undefined}>{unit}</SuffixInput>
                                </InputLine>;
                            else return  <InputLine label={desc+`:`} key={i}>
                                    <Input  value={inp?.[name] ||''} type={type==='n'? "number": undefined}
                                            onChange={e => {
                                                setInp({...inp,[name]:e.currentTarget.value || undefined});
                                            } } />
                                </InputLine>;
                        })
                    }
                </LineColumn>
               </InspectRecordLayout>
        );
    } );

